// mine/pages/change-password/change-password.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    username: '', // 账号（只读展示）
    oldPassword: '', // 原密码
    newPassword: '', // 新密码
    confirmPassword: '', // 确认新密码
    loading: false, // 保存按钮加载状态
    userId: '' // 用户ID
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadUserInfo();
  },

  /**
   * 加载用户信息
   */
  loadUserInfo() {
    try {
      // 从本地存储获取用户信息
      const userInfo = wx.getStorageSync('userInfo');
      const app = getApp();
      
      if (userInfo && userInfo.userId) {
        this.setData({
          userId: userInfo.userId,
          username: app.globalData.username || userInfo.userName || ''
        });
        
        // 获取用户详细信息
        this.getUserDetail(userInfo.userId);
      } else {
        wx.showToast({
          title: '请先登录',
          icon: 'error',
          success: () => {
            wx.navigateTo({
              url: '/pages/login/login'
            });
          }
        });
      }
    } catch (error) {
      console.error('加载用户信息出错:', error);
      wx.showToast({
        title: '加载用户信息失败',
        icon: 'error'
      });
    }
  },

  /**
   * 获取用户详细信息
   */
  getUserDetail(userId) {
    wx.showLoading({
      title: '加载中...'
    });

    // 使用正确的接口路径获取用户信息
    wx.request({
      url: `http://localhost:8080/system/user/${userId}`,
      method: 'GET',
      header: {
        'Authorization': 'Bearer ' + wx.getStorageSync('token')
      },
      success: (res) => {
        wx.hideLoading();
        console.log('获取用户详情响应:', res.data);

        if (res.data && res.data.code === 200 && res.data.data) {
          const userData = res.data.data;
          this.setData({
            username: userData.userName || this.data.username
          });
        } else {
          console.log('用户信息为空，使用默认值');
          // 如果获取不到用户信息，使用全局变量中的用户名
          const app = getApp();
          if (app.globalData.username) {
            this.setData({
              username: app.globalData.username
            });
          }
        }
      },
      fail: (err) => {
        wx.hideLoading();
        console.error('获取用户详情失败:', err);
        
        // 如果获取失败，使用全局变量中的用户名
        const app = getApp();
        if (app.globalData.username) {
          this.setData({
            username: app.globalData.username
          });
        }
        
        wx.showToast({
          title: '获取用户信息失败，使用默认值',
          icon: 'none',
          duration: 2000
        });
      }
    });
  },

  /**
   * 输入原密码
   */
  inputOldPassword(e) {
    this.setData({
      oldPassword: e.detail.value
    });
  },

  /**
   * 输入新密码
   */
  inputNewPassword(e) {
    this.setData({
      newPassword: e.detail.value
    });
  },

  /**
   * 输入确认密码
   */
  inputConfirmPassword(e) {
    this.setData({
      confirmPassword: e.detail.value
    });
  },

  /**
   * 保存修改
   */
  saveChanges() {
    const { oldPassword, newPassword, confirmPassword } = this.data;

    // 表单验证
    if (!oldPassword.trim()) {
      wx.showToast({
        title: '请输入原密码',
        icon: 'none'
      });
      return;
    }

    if (!newPassword.trim()) {
      wx.showToast({
        title: '请输入新密码',
        icon: 'none'
      });
      return;
    }

    if (!confirmPassword.trim()) {
      wx.showToast({
        title: '请确认新密码',
        icon: 'none'
      });
      return;
    }

    if (newPassword !== confirmPassword) {
      wx.showToast({
        title: '两次密码输入不一致',
        icon: 'none'
      });
      return;
    }

    if (newPassword.length < 6) {
      wx.showToast({
        title: '密码长度不能少于6位',
        icon: 'none'
      });
      return;
    }

    // 显示加载状态
    this.setData({
      loading: true
    });

    // 修改密码
    this.updatePassword(oldPassword, newPassword);
  },

  /**
   * 修改密码
   */
  updatePassword(oldPassword, newPassword) {
    const passwordData = {
      oldPassword: oldPassword.trim(),
      newPassword: newPassword.trim()
    };

    console.log('修改密码请求数据:', passwordData);

    // 使用若依系统的专门密码修改接口
    wx.request({
      url: 'http://localhost:8080/system/user/profile/updatePwd',
      method: 'PUT',
      header: {
        'content-type': 'application/json',
        'Authorization': 'Bearer ' + wx.getStorageSync('token')
      },
      data: passwordData,
      success: (res) => {
        console.log('修改密码响应:', res.data);

        if (res.data && res.data.code === 200) {
          console.log('密码修改成功');
          
          // 密码修改成功
          wx.showToast({
            title: '密码修改成功',
            icon: 'success'
          });

          // 清除本地存储的用户信息
          wx.removeStorageSync('token');
          wx.removeStorageSync('userInfo');
          wx.removeStorageSync('residentId');

          // 清除全局变量
          const app = getApp();
          app.globalData.token = '';
          app.globalData.userInfo = null;
          app.globalData.userId = '';
          app.globalData.residentId = '';

          // 延迟跳转到登录页面
          setTimeout(() => {
            wx.showModal({
              title: '修改成功',
              content: '密码已修改，请重新登录',
              showCancel: false,
              success: () => {
                wx.reLaunch({
                  url: '/pages/login/login'
                });
              }
            });
          }, 1500);
        } else {
          // 密码修改失败
          let errorMsg = '密码修改失败，请重试';
          if (res.data && res.data.msg) {
            errorMsg = res.data.msg;
          }
          console.error('密码修改失败:', res.data);
          wx.showToast({
            title: errorMsg,
            icon: 'none',
            duration: 3000
          });
        }
      },
      fail: (err) => {
        console.error('修改密码请求失败:', err);
        wx.showToast({
          title: '网络异常，请重试',
          icon: 'none'
        });
      },
      complete: () => {
        this.setData({
          loading: false
        });
      }
    });
  }
});